// 定义一个类，它想要“假装”成一个函数
class WannabeFunction {
  // 实现 call() 方法，让这个类的实例可以像函数一样被调用
  // 这个 call 方法接收三个字符串参数 a, b, c
  // 返回将它们用空格连接起来，并在末尾加上感叹号的新字符串
  String call(String a, String b, String c) {
    return '$a $b $c!';
  }

  // 这个类还可以有其他普通的成员和方法
  void sayHello() {
    print("我虽然能被调用，但我本质还是个对象呀！你好！");
  }
}

// --- 主入口函数 ---
void main() {
  print('--- 演示可调用对象 (Callable Objects) ---');

  // 创建 WannabeFunction 类的一个实例
  var wf = WannabeFunction();

  // 调用实例的普通方法
  wf.sayHello();

  // 现在，像调用函数一样直接调用这个对象实例！
  // 这实际上会执行 wf 对象的 call() 方法
  var result = wf('你好', 'Dart', '世界'); // 调用 wf(...) 就等于调用 wf.call(...)

  // 打印 call() 方法返回的结果
  print('\n调用 wf("你好", "Dart", "世界") 的结果是:');
  print(result); // 输出: 你好 Dart 世界!

  print('\n--- 可调用对象演示完成 ---');
}
